package com.softserveinc.autorent.controller;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import com.softserveinc.autorent.manager.CarVendorEJB;
import com.softserveinc.autorent.model.CarVendor;

@ManagedBean
@RequestScoped  //@SessionScoped - разобраться в чем разница
public class CarVendorMB implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -759137830739418228L;
	@EJB
	private CarVendorEJB carVendorEJB;
//    @ManagedProperty("#{param.id}")
    String id = "";
	private List<CarVendor> list = new ArrayList<CarVendor>();
	private CarVendor carVendor = new CarVendor();
	
	
    @PostConstruct
    public void init() {
        System.out.println("Get current");
    	FacesContext facesContext = FacesContext.getCurrentInstance();
    	System.out.println("taking size");
        if (facesContext.getExternalContext().getRequestParameterMap().size() > 0)
        {        	
        System.out.println("size" + facesContext.getExternalContext().getRequestParameterMap().size());        	
		id = facesContext.getExternalContext().getRequestParameterMap().get("id");
		System.out.println("id="+id);
		if (id != null)
		{
			System.out.println("id not null="+id);
		if (Integer.parseInt(id) > 0)
		findById(Integer.parseInt(id));
		}
        }
	}
	
	public List<CarVendor> getList() {			   	    			
		return findAll();
	}

	public CarVendor findById(int id) {			
    	this.carVendor = carVendorEJB.findById(id);    			
		return carVendor;
	}
	
	public List<CarVendor> findAll() {			
    	list = carVendorEJB.findAll();    			
		return list;
	}
	
	public String doDelete(int id)
	{
		System.out.println("Try to delete vendor id="+id);
		if (list.size() > 0)
		{
			carVendorEJB.delete(id);
		}
		return "car_vendor_list.xhtml?faces-redirect=true";
	}
/*Функция выбирает объект для его редактирования*/	
//	public String doChoose(int id)
//	{	
////		System.out.println("Try to choose vendor id="+id);		
////		if (list.size() > 0)
////		{
////			for (CarVendor vendor : list) {
////				if (vendor.getId() == id)
////				this.carVendor = vendor;
////			}
////		}
//		return "edit_vendor.xhtml?faces-redirect=true";// - убирает сессию, здесь надо передать данные
//	}
	
		

//	public String doUpdate(int id)
//	{//пока на работает - не передается объект
//		System.out.println("Try to update object w id="+carVendor.getId()+"carVenDor.Name="+carVendor.getName()+" id="+id );
//		carVendor.setId(id);
//		carVendorEJB.update(carVendor);		
//		return "car_vendor_list.xhtml?faces-redirect=true";		
//	}
	
	public String doUpdate()
	{
		System.out.println("Carvendor ID is "+carVendor.getId()+" and name "+carVendor.getName());
		carVendorEJB.update(carVendor);		
		return "car_vendor_list.xhtml?faces-redirect=true";		
	}

	public String doCreate()
	{
		System.out.println("Try to update object w name="+carVendor.getName());		
		carVendorEJB.create(carVendor);	
		return "car_vendor_list.xhtml?faces-redirect=true";
	}	
	

	public CarVendor getCarVendor() {
		return carVendor;
	}
	public void setCarVendor(CarVendor carVendor) {
		this.carVendor = carVendor;
	}
	public void setList(List<CarVendor> list) {
		this.list = list;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}	
	
}
